Post

Replies

Boosts

Views

Activity

Reply to ipados 26 and xib
i just solved using a new class #import <UIKit/UIKit.h> @interface ZoomScrollViewController : UIViewController <UIScrollViewDelegate> @property (nonatomic, strong) UIScrollView *zoomScrollView; @end #import "ZoomScrollViewController.h" #import <sys/utsname.h> @implementation ZoomScrollViewController - (void)viewDidLoad { [super viewDidLoad]; // Disabilita gli inset automatici su iOS 11+ if (@available(iOS 11.0, *)) { self.zoomScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } else { self.automaticallyAdjustsScrollViewInsets = NO; } // Se stai usando Interface Builder, collega la scrollView via outlet. // Altrimenti: UIView *orig = self.view; UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:orig.frame]; scroll.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; scroll.delegate = self; scroll.backgroundColor = [UIColor blackColor]; self.zoomScrollView = scroll; [scroll addSubview:orig]; self.view = scroll; // Assicurati che lo scrollView non si veda “bianco” dove non c'è contenuto self.zoomScrollView.backgroundColor = self.view.backgroundColor; // Disabilita inset automatici su iOS 11+ if (@available(iOS 11.0, *)) { self.zoomScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } else { self.automaticallyAdjustsScrollViewInsets = NO; } } // Helper per recuperare l’identificativo del device - (NSString*)deviceModelIdentifier { struct utsname systemInfo; uname(&systemInfo); return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; } - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; UIView *content = self.zoomScrollView.subviews.firstObject; if (!content) return; // 1) Reset content.transform = CGAffineTransformIdentity; content.frame = CGRectMake(0, 0, 1024, 768); // 2) Dimensioni container CGSize cSize = self.zoomScrollView.bounds.size; CGFloat scaleX = cSize.width / 1024.0; CGFloat scaleY = cSize.height / 768.0; // 3) Controllo dispositivo NSString *modelID = [self deviceModelIdentifier]; NSLog(@"🔖 Device model: %@", modelID); NSLog(@"scaleX: %.3f, scaleY: %.3f", scaleX, scaleY); BOOL isiPadMiniOrA16 = NO; if ([modelID hasPrefix:@"iPad14,1"] || [modelID hasPrefix:@"iPad14,2"] || [modelID hasPrefix:@"iPad14,6"] || [modelID hasPrefix:@"iPad14,7"] || [modelID hasPrefix:@"iPad15,7"]) { isiPadMiniOrA16 = YES; } if (isiPadMiniOrA16) { scaleX = 1.152; // puoi mantenere scaleY come calcolato sopra, oppure settarlo fisso se necessario } NSLog(@"scaleX: %.3f, scaleY: %.3f", scaleX, scaleY); // 4) Applica trasformazione (stretch X) content.transform = CGAffineTransformMakeScale(scaleX, scaleY); // 4b) Centra il contenuto trasformato nella scrollView CGSize scaledSize = CGSizeMake(1024 * scaleX, 768 * scaleY); self.zoomScrollView.contentSize = scaledSize; CGFloat offsetX = (self.zoomScrollView.bounds.size.width - scaledSize.width) / 2.0; CGFloat offsetY = (self.zoomScrollView.bounds.size.height - scaledSize.height) / 2.0; // Assicura che gli offset siano >= 0 offsetX = MAX(0, offsetX); offsetY = MAX(0, offsetY); // Posiziona il contenuto al centro content.center = CGPointMake(scaledSize.width / 2.0 + offsetX, scaledSize.height / 2.0 + offsetY); // 5) Calcola nuova size del contenuto trasformato self.zoomScrollView.contentSize = scaledSize; // 6) Centra orizzontalmente solo se necessario CGFloat xOff = (scaledSize.width - cSize.width) / 2.0; [self.zoomScrollView setContentOffset:CGPointMake(xOff, 0) animated:NO]; // 7) Disattiva lo zoom dinamico della scrollView self.zoomScrollView.minimumZoomScale = 1.0; self.zoomScrollView.maximumZoomScale = 1.0; self.zoomScrollView.zoomScale = 1.0; } @end code-block with this tricks works in ios18.5 and 26
Topic: Design SubTopic: General
Jul ’25
Reply to ipados 26 and xib
using a function for autoresizing works... in the future what do you suggest me? using swift and objc both, rewritter is too big project -(void)fixAutoResizingForSubviews:(UIView *)parent { // 19/06/2025 Simone per ios26 for (UIView *sub in parent.subviews) { if (sub == barMenu) { sub.autoresizingMask = UIViewAutoresizingFlexibleWidth; // No flexibleHeight } else { sub.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; } [self fixAutoResizingForSubviews:sub]; } }
Topic: Design SubTopic: General
Jun ’25
Reply to ipados 26 and xib
i try to update using autolayout but another issue is the new 3 buttons (close, hide and fullscreen) are over the uibutton inside ma left bar, is it possible create a margin when are showed?
Topic: Design SubTopic: General
Jun ’25
Reply to ipados 26 and xib
sorry, i just attached sample... this project was born in 2013 with objc and xib, at the moment is over 300 views and use xib with a scaled zoom for adapt to screen size like: CGFloat scale=[[UIScreen mainScreen] scale]; CGRect screenBounds = [[UIScreen mainScreen] bounds]; CGSize screenSize = CGSizeMake(screenBounds.size.width*scale,screenBounds.size.height*scale); // 2048 e 1536 sono le risoluzioni del retina CGFloat scalaX=screenSize.width/2048; CGFloat scalaY=screenSize.height/1536; if ((screenSize.width==1366) && (screenSize.height==1024)) { scalaX=1.34; scalaY=1.34; } if (scalaX<1) { scalaX=1; } if ((scalaY<1) && (!((screenBounds.size.width*scale==2266) && (screenBounds.size.height*scale==1488)))) { scalaY=1; } CGAffineTransform transform = CGAffineTransformMakeScale(scalaX,scalaY); self.view.transform = transform; code-block
Topic: Design SubTopic: General
Jun ’25
Reply to iOS 17.1 : SwiftUI Datepicker is crashing.
i try to create programmatically but the error is the same: UIDatePicker *datePicker = [[UIDatePicker alloc] init]; datePicker.datePickerMode = UIDatePickerModeDateAndTime; if (@available(iOS 13.4, *)) { [datePicker setPreferredDatePickerStyle:UIDatePickerStyleWheels]; } else { // Fallback on earlier versions } datePicker.date = [NSDate date]; [self.view addSubview:datePicker]; datePicker.frame = CGRectMake(0, 0, self.view.frame.size.width, 216); // Puoi personalizzare queste dimensioni a tuo piacimento if (@available(iOS 15.0, *)) { datePicker.roundsToMinuteInterval=NO; } else { // Fallback on earlier versions } if i put datePicker.datePickerMode = UIDatePickerModeDate; works... the issue is when contant is time
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Nov ’23
Reply to iOS 17.1 : SwiftUI Datepicker is crashing.
the problem is that if i simply put a datapicker inside a new project works... if i put datepicker in a form already present (on xib) and i set time wheel, when i scroll the time crash, but in the class there isn't any event of datepicker, only scroll crash (inside the apple library).. the same with ios 17.0 works
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Nov ’23
Reply to iOS 17.1 : SwiftUI Datepicker is crashing.
try also with ios17.2 but crash always Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]' *** First throw call stack: ( 0 CoreFoundation 0x00007ff80049aa09 __exceptionPreprocess + 242 1 libobjc.A.dylib 0x00007ff8000638b4 objc_exception_throw + 48 2 CoreFoundation 0x00007ff800508c8d -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 604 3 CoreFoundation 0x00007ff800499200 +[NSDictionary dictionaryWithObjects:forKeys:count:] + 49 4 UIKitCore 0x00007ff804ce4703 __59-[_UIDatePickerCalendarTimeLabel attributedTextWithRanges:]_block_invoke.150 + 156 5 UIKitCore 0x00007ff804ce3fd0 -[_UIDatePickerCalendarTimeLabel applyTextAttributesForState:inputScope:updater:] + 404 6 UIKitCore 0x00007ff804ce432f -[_UIDatePickerCalendarT *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]' *** First throw call stack: ( 0 CoreFoundation 0x00007ff80049aa09 __exceptionPreprocess + 242 1 libobjc.A.dylib 0x00007ff8000638b4 objc_exception_throw + 48 2 CoreFoundation 0x00007ff800508c8d -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 604 3 CoreFoundation 0x00007ff800499200 +[NSDictionary dictionaryWithObjects:forKeys:count:] + 49 4 UIKitCore 0x00007ff804ce4703 __59-[_UIDatePickerCalendarTimeLabel attributedTextWithRanges:]_block_invoke.150 + 156 5 UIKitCore 0x00007ff804ce3fd0 -[_UIDatePickerCalendarTimeLabel applyTextAttributesForState:inputScope:updater:] + 404 6 UIKitCore 0x00007ff804ce432f -[_UIDatePickerCalendarTimeLabel attributedTextWithRanges:] + 667 7 UIKitCore 0x00007ff805ef44c6 -[_UIDatePickerWheelsTimeLabel pushCurrentStateIntoUI] + 77 8 UIKitCore 0x00007ff804ce4e3a -[_UIDatePickerCalendarTimeLabel stateMachineUpdateFromState:toState:] + 148 9 UIKitCore 0x00007ff805ef4c5c -[_UIDatePickerWheelsTimeLabel stateMachineUpdateFromState:toState:] + 47 10 UIKitCore 0x00007ff804ce3675 __68-[_UIDatePickerCalendarTimeLabel initWithTimeFormat:minuteInterval:]_block_invoke + 50 11 UIKitCore 0x00007ff805c61524 handleEvent + 298 12 UIKitCore 0x00007ff804ce4d8f -[_UIDatePickerCalendarTimeLabel _stateMachineSendEvent:] + 110 13 UIKitCore 0x00007ff805ef4cac -[_UIDatePickerWheelsTimeLabel beginEditingWheels] + 42 14 UIKitCore 0x00007ff805b53f64 -[_UIDatePickerView pickerTableView:didChangeSelectionBarRowFrom:to:] + 704 15 UIKitCore 0x00007ff805b5aa4c -[UIPickerColumnView pickerTableView:didChangeSelectionBarRowFrom:to:] + 171 16 UIKitCore 0x00007ff805b5ee1a -[UIPickerTableView _setSelectionBarRow:] + 223 17 UIKitCore 0x00007ff805b5e5a3 -[UIPickerTableView _setContentOffset:notify:] + 583 18 UIKitCore 0x00007ff8061ce25c -[UIScrollView _updatePanGesture] + 5091 19 UIKitCore 0x00007ff80551c3f9 -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 71 20 UIKitCore 0x00007ff8055260a3 _UIGestureRecognizerSendTargetActions + 100 21 UIKitCore 0x00007ff805522dfb _UIGestureRecognizerSendActions + 303 22 UIKitCore 0x00007ff8055221a8 -[UIGestureRecognizer _updateGestureForActiveEvents] + 685 23 UIKitCore 0x00007ff80550f80d _UIGestureEnvironmentUpdate + 3935 24 UIKitCore 0x00007ff80550e449 -[UIGestureEnvironment _updateForEvent:window:] + 892 25 UIKitCore 0x00007ff805becceb -[UIWindow sendEvent:] + 5262 26 UIKitCore 0x00007ff805bc1cfc -[UIApplication sendEvent:] + 772 27 UIKitCore 0x00007ff805c700ef __dispatchPreprocessedEventFromEventQueue + 8406 28 UIKitCore 0x00007ff805c729ac __processEventQueue + 8415 29 UIKitCore 0x00007ff805c685f6 __eventFetcherSourceCallback + 163 30 CoreFoundation 0x00007ff8003f7487 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 31 CoreFoundation 0x00007ff8003f73c9 __CFRunLoopDoSource0 + 157 32 CoreFoundation 0x00007ff8003f6bc6 __CFRunLoopDoSources0 + 215 33 CoreFoundation 0x00007ff8003f12fb __CFRunLoopRun + 919 34 CoreFoundation 0x00007ff8003f0b81 CFRunLoopRunSpecific + 557 35 GraphicsServices 0x00007ff8103b808f GSEventRunModal + 137 36 UIKitCore 0x00007ff805ba1229 -[UIApplication _run] + 972 37 UIKitCore 0x00007ff805ba5c97 UIApplicationMain + 123 38 simulatore 0x0000000108b5b488 main + 104 39 dyld 0x000000010a1023e0 start_sim + 10 40 ??? 0x000000010d3d83a6 0x0 + 4517102502 ) libc++abi: terminating due to uncaught exception of type NSException
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Nov ’23